﻿<%
'''依赖层级:000
'''依赖文件:无
'''底层正则类
'本底层类服务于框架，不允许抛出错误
'为防止未知的正则污染，每个函数使用单独的RegExp对象
Class AshapoPreg


	'''正则Test
	'p_s:要判断的字符串
	'p_p:正则表达式
	Public Function Test(Byval p_s, Byval p_p)
		Dim t_r : Set t_r = New RegExp
		t_r.Global = True
		t_r.IgnoreCase = True
		t_r.Multiline = False
		If IsN(p_s) Then
			Test = False : Exit Function
		End If
		t_r.Pattern = p_p
		Test = t_r.Test(CStr(p_s))
		Set t_r = Nothing
	End Function

	'''底层根据正则表达式替换字符串内容
	'''本函数为底层函数,外部请使用RegReplace\RegReplaceM函数
	'p_s:要进行替换的字符串
	'p_p:正则表达式
	'p_r:替换内容,支持正则捕获组
	'p_m:多行模式标识符,为1时为多行模式
	Private Function ruleReplace_(Byval p_s, Byval p_p, Byval p_r, Byval p_m)
		Dim t_r : Set t_r = New RegExp
		t_r.Global = True
		t_r.IgnoreCase = True
		t_r.Multiline = False
		Dim t_s : t_s = p_s
		If Has(p_s) Then
			If p_m = 1 Then
				t_r.Multiline = True
			End If
			t_r.Pattern = p_p
			t_s = t_r.Replace(t_s, p_r)
		End If
		ruleReplace_ = t_s
		Set t_r = NoThing
	End Function

	'''根据正则表达式替换字符串内容
	'p_s:要进行替换的字符串
	'p_p:正则表达式
	'p_r:替换内容,支持正则捕获组
	Public Function [Replace](Byval p_s, Byval p_p, Byval p_r)
		[Replace] = ruleReplace_(p_s, p_p, p_r, 0)
	End Function
	
	'''根据正则代表式替换文本(多行模式)
	'p_s:要进行替换的字符串
	'p_p:正则表达式
	'p_r:替换内容,支持正则捕获组
	Public Function ReplaceM(Byval p_s, Byval p_p, Byval p_r)
		RegReplaceM = ruleReplace_(p_s, p_p, p_r, 1)
	End Function

	'''正则表达式编组捕获
	'p_s:要判断的字符串
	'p_p:正则表达式
	Public Function Match(Byval p_s, Byval p_p)
		Dim t_r : Set t_r = New RegExp
		t_r.Global = True
		t_r.IgnoreCase = True
		t_r.Multiline = False
		t_r.Pattern = p_p
		Set Match = t_r.Execute(p_s)
		Set t_r = NoThing
	End Function

End Class
%>